﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
#if !XBOX
using Microsoft.Xna.Framework.Input.Touch;
#endif

namespace Brain
{
    public interface IInputManager : IEngineManager, IUpdateable
    {
#if !XBOX
        List<GestureSample> Gestures { get; set; }

        TouchCollection Touches { get; set; }
#endif

        bool IsKeyDown(Enum Key);
        bool IsKeyUp(Enum Key);
        bool IsKeyPress(Enum Key);

        void SetMousePosition(int X, int Y);
        Vector2 GetMousePosition();
        Vector2 GetMouseDifference();

        bool IsMouseLeftDown();
        bool IsMouseRightDown();
        bool IsMouseMiddleDown();

        bool IsMouseLeftUp();
        bool IsMouseRightUp();
        bool IsMouseMiddleUp();

        bool IsMouseLeftClick();
        bool IsMouseRightClick();
        bool IsMouseMiddleClick();

        int GetMouseWheelValue();
        int GetMouseWheelDifference();

        bool IsButtonDown(Enum Button, PlayerIndex PlayerIndex);
        bool IsButtonUp(Enum Button, PlayerIndex PlayerIndex);
        bool IsButtonPress(Enum Button, PlayerIndex PlayerIndex);

        bool IsAnyPlayerButtonDown(Enum Button);
        bool IsAnyPlayerButtonUp(Enum Button);
        bool IsAnyPlayerButtonPress(Enum Button);

        Vector2 GetLeftThumbstick(PlayerIndex PlayerIndex);
        Vector2 GetRightThumbstick(PlayerIndex PlayerIndex);
        Vector2 GetAnyPlayerLeftThumbstick();
        Vector2 GetAnyPlayerRightThumbstick();

        float GetLeftTrigger(PlayerIndex PlayerIndex);
        float GetRightTrigger(PlayerIndex PlayerIndex);
    }
}
